Python标准库之 xml.etree.ElementTree

您所在的位置:网站首页 elementtree生成的sub element缩进 Python标准库之 xml.etree.ElementTree

Python标准库之 xml.etree.ElementTree

2024-07-15 12:14| 来源: 网络整理| 查看: 265

Element类型是一种灵活的容器对象,用于在内存中存储结构化数据。 每个element对象都具有以下属性:   1. tag 标签:string对象,表示数据代表的种类。   2. attrib 属性:dictionary对象,表示附有的属性。   3. text:string对象,表示element的内容。   4. tail:string对象,表示element闭合之后的尾迹。   5. 若干子元素(child elements)。

texttail 1 2 3 4

创建元素的方法有Element或者SubElement(), 前者称作元素的构建函数(constructor),用以构建任一独存的元素; 后者称作元素的制造函数(factory function),用以制造某一元素的子元素。

有了一串元素之后,使用ElementTree类来将其打包,把一串元素转换为xml文件或者从xml文件中解析出来。

导入ElementTree import xml.etree.ElementTree as ET

使用ElementTree代表整个XML文件,并将其视为一棵树,Element代表这个文档树中的单个节点。

ET对象可以通过以下方法导入数据:

# 从硬盘的xml文件中读取 import xml.etree.ElementTree as ET tree = ET.parse('aa.xml') root = tree.getroot() # 获取根节点 # 从字符串读取数据 root = ET.fromstring(aa_as_string)

可以对根节点进行操作,获取其子元素

for child in root: print child.tag, child.attrib 生成xml from xml.etree import ElementTree as ET def create_name_same(el): li = [] for i in range(10): li.append(ET.SubElement(el, 'case')) return li def create_name_not(el): ET.SubElement(el, 'name') ET.SubElement(el, 'yyy') ET.SubElement(el, 'xxx') # 创建根节点 root = ET.Element('tasks') sub1 = ET.SubElement(root, 'cases') sub2 = ET.SubElement(root, 'name') # 创建指定节点的相同名字的子节点 li_sub1_sub_node = create_name_same(sub1) # 创建指定节点的不同名字的子节点 for sub1_sub_node in li_sub1_sub_node: create_name_not(sub1_sub_node) # 打印输出root结构 print(ET.dump(root)) # 将创建好的root树写入文件 # 第一种写入文件的方法 tree = ET.ElementTree(root) tree.write("/root/桌面/asd/aaa.xml", encoding='utf-8', xml_declaration=True) # 第二种写入文件的方法 (这个方法生成的xml文件使用文本打开格式是有缩进的) # ET模块转换root为bytes输出, xml_string = ET.tostring(root) from xml.dom import minidom dom = minidom.parseString(xml_string) with open("/root/桌面/asd/aaa.xml", 'w', encoding='utf-8') as f: dom.writexml(f, addindent='\t', newl='\n', encoding='utf-8') # mindom转换dom为字符串str,查看dom的文本结构 # dom.toxml() # dom.toprettyxml() # 等于 添加了addindent='\t', newl='\n'的xml格式的字符串str形式输出 # type(dom.toprettyxml())


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3